package com.itheima.springmvc.controller;

import java.io.File;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import com.itheima.springmvc.pojo.Items;
import com.itheima.springmvc.service.ItemService;

@Controller
@RequestMapping("/items")
public class ItemController {

	@Autowired
	private ItemService itemService;

	@Value("${PIC_FILE_PATH}")
	private String fileNamePath;
	
	@GetMapping("/itemList")
	public ModelAndView getItemList() throws Exception {
		// 查询商品列表
		List<Items> itemList = itemService.getItemList();
		// 把结果传递给页面
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("itemsList", itemList);
		// 设置逻辑视图
		modelAndView.setViewName("itemsList");
//		if (true) { throw new CustomerException("这是我们自定义的异常，哈哈哈。。。。。"); }
		// 返回结果
		return modelAndView;
	}

	@RequestMapping("/editItems")
	public String editItem(Integer id, Model model) {
		Items items = itemService.getItemById(id);
		// 把数据传递给页面
		model.addAttribute("items", items);
		// 返回逻辑视图
		return "editItems";
	}

	/**
	 * 注意：   上传的文件的路径在 D:/images  下， 
	 * 需要配置一个虚拟路径才可以显示图片， 已完成图片删除功能
	 * @param items
	 * @param picture
	 * @param pic
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/updateItems", method = { RequestMethod.POST })
	public String updateItem(Items items, MultipartFile picture, String pic) throws Exception {
		// 把图片保存到图片目录下
		// 判断当前服务器中是否包含当前文件
		String oriName = picture.getOriginalFilename();
		File file = new File(fileNamePath+pic);
		if (file!=null && file.exists()){
			file.delete();
			System.out.println("删除原有的文件， 文件名称为："+pic);
		}
		// 保存文件
		picture.transferTo( new File(fileNamePath+oriName));
		// 把文件名保存到数据库
		items.setPic(oriName);
		
		itemService.updateItem(items);
		// 返回成功页面
		return "redirect:/items/itemList.action";
	}
}
